<?php
if (!defined('IN_SYS')) {
    header('HTTP/1.1 403 Forbidden');
    exit(0);
}

require_once './inc/err.inc.php';

/** 
* 会话控制类
* 
* 对SESSION的一些封装
* @author xzqiapchu(www.xzzhangqiaochu.top)
* @version v1.0.0.200131_beta
*/
class Session
{
    /**
    * 开始session
    *
    * 设置相关参数，并开始session
    * @param void
    */
    static function start()
    {
        if (!file_exists('./session')) {
            mkdir('./session') or Err::sysErr('目录./session创建失败！', __FILE__, __LINE__);
        }
        @ini_set('session.gc_maxlifetime', 86400); //设置服务器session有效期为24h
        @ini_set('session.gc_probability', 10);
        @ini_set('session.gc_divisor', 10); //设置过期session删除概率为100%
        session_save_path('./session'); //设置储存session的目录
        session_name('CHATS_SESSION'); //设置客户端cookie存放sessionID的变量名称
        session_set_cookie_params(86400, '', '', '', true); //设置客户端cookie存放sessionID的过期时间为24h，并使用HttpOnly
        session_start();
    }

    /**
    * 结束session
    *
    * 写入seesion存储文件，此函数非必需
    * @param void
    */
    static function close()
    {
        session_write_close();
    }

    /**
    * 删除所有session
    *
    * 销毁$_SESSION变量，删除session文件，清空cookie中的sessionID
    * $_SESSION仍可进行操作，但所有的操作在下次会话时无法还原
    * @return void
    */
    static function destory()
    {
        session_destroy(); //删除session文件，已加载到内存中的$_SESSION变量仍可访问
        unset($_SESSION); //销毁内存中的$_SESSION变量
        setcookie('CHATS_SESSION', '', time() - 172800); //删除cookie中的sessionID
    }
}
